var ds;
var grid;
var insertForm;
var updateForm;
var form;
var win;
Ext.onReady(function() {
			initSortStore();
			initData();
			initGrid();
		});

var schemeStore, processNameStore, sortStore;
function initSortStore() {
	sortStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '../orderProcessAdd.do?action=sortList'
						}),

				reader : new Ext.data.JsonReader({
							totalProperty : 'totalProperty',
							root : 'root'
						}, [{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								}, {
									name : 'areaFunc'
								}, {
									name : 'bz'
								}, {
									name : 'date1'
								}])
			});

	
	processNameStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '../orderProcessAdd.do?action=processNameList'
						}),

				reader : new Ext.data.JsonReader({
							totalProperty : 'totalProperty',
							root : 'root'
						}, [{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								}, {
									name : 'areaFunc'
								},{
									name : 'bz'
								}, {
									name : 'date1'
								}])
			});
	schemeStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '../orderProcessAdd.do?action=schemeList'
						}),

				reader : new Ext.data.JsonReader({
							totalProperty : 'totalProperty',
							root : 'root'
						}, [{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								},{
									name : 'areaFunc'
								}, {
									name : 'bz'
								}, {
									name : 'date1'
								}])
			});
	ds = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '../orderProcessAdd.do?action=list'
						}),

				reader : new Ext.data.JsonReader({
							totalProperty : 'totalProperty',
							root : 'root'
						}, [{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								},{
									name : 'areaFunc'
								}, {
									name : 'bz'
								}, {
									name : 'date1'
								}])
			});
}
var schemeRecord=new Ext.data.Record.create([{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								},{
									name : 'areaFunc'
								}, {
									name : 'bz'
								}, {
									name : 'date1'
								}]);
var processNameRecord=new Ext.data.Record.create([{
									name : 'id'
								}, {
									name : 'specName'
								}, {
									name : 'scheme'
								}, {
									name : 'processName'
								}, {
									name : 'processPos'
								}, {
									name : 'areaFunc'
								},{
									name : 'bz'
								}, {
									name : 'date1'
								}]);
function initData() {
	
	sortStore.load({
				params : {
					start : 0,
					limit : 10
				}
			},{
				callback : function(_rec, o, s) {
				}
			});
	ds.load({
				params : {
					start : 0,
					limit : 10
				}
			});
	
}
var form;
/* 加工名称和 加工策略决定加工位置是在第 几个 */
function getInsertForm() {

	if (!form) {
		form = new Ext.FormPanel({
			labelWidth : 75,
			url : '../orderProcessAdd.do?action=add',
			frame : true,
			bodyStyle : 'padding:5px 5px 0',
			width : 340,
			defaults : {
				width : 230
			},
			defaultType : 'textfield',
			items : [{
				fieldLabel : '规格名称',// 一开始漏了个主id,导致update不成功
				name : 'specName',
				xtype : 'combo',
				allowBlank : false,
				store : sortStore,// [['yuanzhu',"圆柱"],['fangkuai',"方块"],['others',"其他"]]
				displayField : 'specName',
				typeAhead : true,
				//可以增加一个新的规格，也可以在原来规格的基础上进行修改 。
				listeners : {
					'change' : function(_combox, _new, _old) {

						/* 根据加工类型，动态的查找所有的加工 */
						// /alert("change");
					
						schemeStore.reload({
							params : {
								specName : _new
							},
							callback : function(_rec, o, s) {
								/* 根据规格的名称，添加一个新的策略提供为备选 */
								schemeStore.add(new schemeRecord({
											id : 0,
											specName : _new,
											scheme : schemeStore.getCount() + 1,
											processName : "",
											processPos : 1,
											bz : "",
											date1 : ""
										}));
							}
						});
						return true;
					},
					'select' : function(_combox, _val, _index) {

						/* 根据加工类型，动态的查找所有的加工 */
						// /alert("select");
						
						var specName=_val.data["specName"];
						schemeStore.reload({
							params : {
								specName : specName
							},
							callback : function(_rec, o, s) {
								/* 根据规格的名称，添加一个新的策略提供为备选 */
								schemeStore.add(new schemeRecord({
											id : 0,
											specName : specName,
											scheme : schemeStore.getCount() + 1,
											processName : "",
											processPos : 1,
											bz : "",
											date1 : ""
										}));
							}
						});
						return true;
					}
				},
				mode : 'local',
				// forceSelection : true,
				triggerAction : 'all',
				emptyText : 'Select a state...',
				selectOnFocus : true,
				anchor : '90%'
			}, {
				xtype : 'combo',
				// format : 'Y-m-d',
				fieldLabel : '加工策略',
				name : 'scheme',
				allowBlank : false,
				store : schemeStore,// [['yuanzhu',"圆柱"],['fangkuai',"方块"],['others',"其他"]]
				displayField : 'scheme',
				typeAhead : true,
				mode : 'local',
				forceSelection : true,
				triggerAction : 'all',
				emptyText : 'Select a state...',
				selectOnFocus : true,
				//加工策略可能是新的，也可能在原来的基础上修改。
				//禁止 用change，新的那个也增加进去了。
				listeners : {
					/*"change" : function(_combox, _new, _old) {

						 根据加工类型，动态的查找所有的加工
						var specName=form.find("name", "specName")[0]
										.getValue();
						var scheme=_new;
						processNameStore.load({
									params : {
										specName : specName,
										scheme : scheme
									}
								});
						return true;
					}, */
					"select" : function(_combox, _val, _index) {

						 /*根据加工类型，动态的查找所有的加工 */
						var specName=form.find("name", "specName")[0]
										.getValue();
						var scheme=_val.data["scheme"];
						processNameStore.load({
									params : {
										specName : specName,
										scheme : scheme
									}
								});
						return true;
					}
				},
				anchor : '90%'
			}, {
				xtype : 'combo',
				// format : 'Y-m-d',
				fieldLabel : '加工名称',
				name : 'processName',
				allowBlank : false,
				store : processNameStore,// [['yuanzhu',"圆柱"],['fangkuai',"方块"],['others',"其他"]]
				displayField : 'processName',
				typeAhead : true,
				mode : 'local',
				//forceSelection : true,
				triggerAction : 'all',
				emptyText : 'Select a state...',
				selectOnFocus : true,
				//加工位置 肯定是在目前的个数上面加1.
				//加工名称肯定是一个新的名称，没有出现过的 。
				listeners : {
					/*"select" : function(_combox, _rec, _index) {
						
						form.find("name", "processPos")[0].setValue(_index + 1);
						return true;
					},*/
					"change" : function(_combox, _new, _old) {
						//alert("change:"+processNameStore.getTotalCount());
						form.find("name", "processPos")[0]
								.setValue(processNameStore.getTotalCount() + 1);
						return true;
					}
				},
				anchor : '90%'
			}, {
				fieldLabel : '加工位置',
				name : 'processPos',
				readOnly : true,
				anchor : '90%'
			},  {
				fieldLabel : '加工面积公式',
				name : 'areaFunc',
				//readOnly : true,
				anchor : '90%'
			}, {
				fieldLabel : '备注',
				name : 'bz',

				anchor : '90%'
			}, {
				xtype : 'datefield',
				format : 'Y-m-d',
				fieldLabel : '修改日期',
				name : 'date1',

				anchor : '90%'
			}]
		});
	}
	return form;
}// 构造了一个更新的界面。

function initGrid() {
	Ext.QuickTips.init();

	var xg = Ext.grid;
	/**/
	if (!form)
		form = getInsertForm();
	/* win */
	if (!win) {
		win = new Ext.Window({
					layout : 'column',
					width : 355,
					autoHeight : true, // 4601782
					closeAction : 'hide',
					plain : true,
					items : form,
					modal : false,// 如果这个属性不设，弹出窗口会增加20M内存使用。
					buttons : [{
						text : '保存',
						handler : function() {
							if (form.getForm().isValid()) {
								// Ext.msg.alert("starting to submit");
								form.getForm().submit({
											failure : function(retForm,
													retAction) {
												Ext.MessageBox.alert('提示',
														'保存数据失败！');
											},
											success : function(retForm,
													retAction) {
												//alert("success");
												form.getForm().reset();
												win.hide();
												initData();
											},
											waitMsg : '正在保存数据，请稍后...'
										});

							} else {
								Ext.MessageBox.alert('提示', '请正确填写数据！');
							}
						}
					}, {
						text : '清空',
						handler : function() {
							form.getForm().reset();
						}
					}, {
						text : '关闭',
						handler : function() {
							form.getForm().reset();
							win.hide();
						}
					}]
				});
	}
	// ////////////////////////////////////////////////////////////////////////////////
	// Grid
	// //////////////////////////////////////////////////////////////////////////////////////
	var sm = new xg.CheckboxSelectionModel();
	grid = new xg.GridPanel({
				id : 'button-grid',
				autoScoll : true,
				ds : ds,
				cm : new xg.ColumnModel([sm, {
							header : "编号",
							// width : 40,
							sortable : true,
							dataIndex : 'id'
						}, {
							header : "规格名称",
							// width : 50,
							sortable : true,
							dataIndex : 'specName'
						}, {
							header : "加工策略",
							// width : 50,
							sortable : true,
							dataIndex : 'scheme'
						}, {
							header : "加工名称",
							// width : 50,
							sortable : true,
							dataIndex : 'processName'
						}, {
							header : "加工位置",
							// width : 50,
							sortable : true,
							dataIndex : 'processPos'
						}, {
							header : "加工面积公式",
							// width : 50,
							sortable : true,
							dataIndex : 'areaFunc'
						}, {
							header : "备注",
							// width : 50,
							sortable : true,
							dataIndex : 'bz'
						}, {
							header : "修改日期",
							// width : 50,
							sortable : true,
							dataIndex : 'date1'
						}]),
				sm : sm,
				stripeRows : true,

				viewConfig : {
					forceFit : true
				},

				// inline toolbars
				tbar : [{
							text : '添加',
							tooltip : '添加新的加工流程',
							iconCls : 'add',
							onClick : function() {

								//form.hide();
								form = getInsertForm();
								//form.show();

								var items = new Ext.util.MixedCollection();
								items.add("form", form);

								win.width = 355, win.items = items;
								// Ext.Msg.alert("items.length:"+win.items.length);
								win.title = "添加信息窗口";
								win.show(this);
								form.getForm().reset();
							}
						}],

				bbar : new Ext.PagingToolbar({
							pageSize : 10,
							store : ds,
							displayInfo : true,
							displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
							emptyMsg : "没有记录"
						}),
				width : 700,
				autoHeight : true,
				// frame:true,
				title : '加工流程信息列表',
				iconCls : 'icon-grid',
				renderTo : 'main'
			});
};
